cc.Class({
    extends: cc.Component,

    properties: {
        wheel: cc.Node,           // 转盘节点
        light: cc.Node,           // 灯光底图节点
        drawButton: cc.Button,    // 抽奖按钮
        resultLabel: cc.Label,    // 结果显示标签
    },

    onLoad () {
        // 定义6个奖品，每个奖品角度区间减去30度
        this.prizes = [
            { name: '神秘皮肤', minAngle: -30, maxAngle: 30 },
            { name: '900金币', minAngle: 30, maxAngle: 90 },
            { name: '300金币', minAngle: 90, maxAngle: 150 },
            { name: '3000金币', minAngle: 150, maxAngle: 210 },
            { name: '600金币', minAngle: 210, maxAngle: 270 },
            { name: '300金币', minAngle: 270, maxAngle: 330 },
        ];

        // 初始化旋转角度，记录转盘和灯光的当前旋转角度
        this.currentWheelAngle = 0;
        this.currentLightAngle = 0;
    },
    onDrawButtonByVideoClicked(){
        // 视频抽奖按钮
        console.log('to do')
        this.onDrawButtonClicked();
    },
    onDrawButtonClicked () {
        setTimeout(() => {
            this.node.getComponent('SoundManager').playAudio()
        },1000)
        // 禁用按钮，防止重复点击
        this.drawButton.interactable = false;

        // 随机生成中奖区块
        let randomPrizeIndex = Math.floor(Math.random() * this.prizes.length);
        let prize = this.prizes[randomPrizeIndex];

        // 计算停止的最终角度，中奖的角度范围调整
        let stopAngle = Math.random() * (prize.maxAngle - prize.minAngle) + prize.minAngle;
        console.log(stopAngle, prize)
        // 设置转盘旋转圈数，假设转盘会旋转5圈再停止
        let wheelTotalRotation = 360 * 5 + stopAngle;

        // 设置灯光底图的旋转圈数，假设灯光底图旋转10圈
        let lightTotalRotation = 360 * 10 + stopAngle;
        // 使用 cc.tween 实现转盘的旋转动画，从当前角度继续旋转
        cc.tween(this.wheel)
            .by(5, { angle: -this.currentWheelAngle + wheelTotalRotation }, { easing: 'cubicInOut' })
            .call(() => {
                // 抽奖结束后的回调
                this.showPrizeResult(prize.name);
                // 重新启用按钮
                this.drawButton.interactable = true;
            })
            .start();

        // 使用 cc.tween 实现灯光底图的旋转动画，从当前角度继续旋转，转得更快
        cc.tween(this.light)
            .by(5, { angle: -this.currentLightAngle + lightTotalRotation }, { easing: 'cubicInOut' })
            .start();

        // 记录当前的旋转角度，以便下一次旋转从这里开始
        this.currentWheelAngle = stopAngle;
        this.currentLightAngle = stopAngle;
    },

    showPrizeResult (prizeName) {
        // 显示中奖结果
        console.log('恭喜你，中奖的是: ' + prizeName);
        this.resultLabel.string = '恭喜你，中奖的是: ' + prizeName;
        // 可以添加更多的UI效果，如弹窗、动画等
    },
});
